#ifndef BATCHREPLACER_H
#define BATCHREPLACER_H

#include <QObject>
#include <QString>
#include <QStringList>
#include <QMap>

class BatchReplacer : public QObject
{
    Q_OBJECT
public:
    explicit BatchReplacer(QObject *parent = nullptr);

    // 设置多组替换参数：根目录、替换规则（旧→新）、文件扩展名、排除目录
    void setParameters(const QString &rootDir, 
                      const QMap<QString, QString> &replaceRules,
                      const QStringList &fileExtensions,
                      const QStringList &excludeDirs);

public slots:
    // 开始替换
    void startReplace();

signals:
    // 进度更新（当前文件数，总文件数）
    void progressUpdated(int current, int total);
    // 替换完成（总处理文件数，修改文件数）
    void replaceFinished(int filesProcessed, int filesModified);
    // 日志信息
    void logMessage(const QString &message);

private:
    // 递归遍历目录，收集所有待处理文件
    void collectFiles(const QString &dirPath, QStringList &fileList);
    // 处理单个文件，应用所有替换规则
    bool processFile(const QString &filePath);

    QString m_rootDir;                  // 根目录
    QMap<QString, QString> m_replaceRules; // 多组替换规则（旧→新）
    QStringList m_fileExtensions;       // 要处理的文件扩展名
    QStringList m_excludeDirs;          // 要排除的目录
};

#endif // BATCHREPLACER_H
    